知识点名称:显式和隐式启动Activity

编号: K3-2

前驱知识点编号:K3-1,K3-1

作者:

讲义内容:

Android中提供了Intent机制来协助应用间的交互与通讯,它不仅可用于应用程序之间,也可用于应用程序内部组件之间的交互。Intent是一种运行时绑定机制,它能在程序运行的过程中连接连个不同的组件。通过Intent,应用程序可以向Android系统提出请求,系统根据请求选择一个或多个适当的组件来响应。

Intent通过两种方式寻找目标组件:

(1)显式Intent:通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,一般是在相同的应用程序内部实现的。

(2)隐式Intent:通过Intent Filter来实现的,它一般用在没有明确指出目标组件名称的前提下,一般是用于在不同应用程序之间。

因此,从一个Activity跳转到另外的Activity,就有显式和隐式两种方式,也可以称为显示和隐式启动Activity。

2.1显式启动Activity。

如在My_Activity中,添加一个按钮,当点击该按钮时,启动My_Activity1。则该按钮的事件方法代码如下:

      Intent intent=new Intent(this,My_Activity1.class);
      this.startActivity(intent);

或者使用:

Intent intent=new Intent();
    ComponentName component=new ComponentName(this,My_Activity1.class);
    intent.setComponent(component);
    this.startActivity(intent);

这里使用了Intent的Component的属性设置。即直接绑定了某个组件,这种方式使得组件间的依赖性很强,因此,一般只用在同一个应用中。

2.2隐式启动Activity

没有明确指定组件名的Intent称为隐式意图。Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(Uri和数据类型)找到最合适的组件。例如,项目中创建了My_Activity1。

<activity android:name="com.itcast.intent.My_Activity1">
     <intent-filter>
          <action android:name="cn.itscast.xxx"/>
          <category android:name="android.intent.category.DEFAULT"/>
     </intent-filter>
</activity>

使用隐式意图开启Activity的示例代码如下所示:

Intent intent = new Intent();
// 设置动作和清单文件一样
intent.setAction("cn.itscast.xxx");
startActivity(intent);

results matching ""

    No results matching ""